//#define _CRT_SECURE_NO_WARNINGS
//#include <iostream>
//using namespace std;
//class A{};
//
//class B: public A{};
//
//class Adult
//{
//public:
//	virtual A * func()
//	{
//		cout << "class Adult" << endl;
//		return new A;
//	}
//};
//
//class Child : public Adult
//{
//public:
//	virtual B * func()
//	{
//		cout << "class Child" << endl;
//		return new B;
//	}
//};
//
//void Func(Adult* a)
//{
//	a->func();
//}
//
//
//int main()
//{
//	Adult a;
//	Child c;
//	Func(&a);
//	Func(&c);
//	return 0;
//}